// cloudfunctions/createQuestion/index.js
'use strict';
const db = uniCloud.database();

exports.main = async (event, context) => {
  try {
    console.log('[创建题目请求]', JSON.stringify(event));

    // 基本参数校验
    if (!event.questionData) {
      throw { code: 4001, msg: '缺少题目数据' };
    }


    // 处理接收数据
    const questionData = event.questionData || {};

    // 添加系统字段
    const dbData = {
      ...questionData,
    };

    // 执行数据库插入
    const result = await db.collection('questions').add(dbData);

    return {
      code: 0,
      msg: '创建成功',
      data: {
        ...dbData
      }
    };

  } catch (error) {
    console.error('[创建失败]', error);
    return {
      code: error.code || 500,
      msg: error.msg || '服务器内部错误',
    };
  }
};

// 数据处理方法
function processQuestionData(questionData) {
  return {
    text: String(questionData.text || '').trim().substring(0, 200),
    options: (Array.isArray(questionData.options) ? questionData.options : [])
      .map(opt => String(opt).trim().substring(0, 50))
      .filter(opt => opt !== ''),
    answer: String(questionData.answer || '').trim().substring(0, 50),
    status: Boolean(questionData.status)
  };
}

// 数据验证方法
function validateQuestionData(data) {
  const requiredFields = ['text', 'options', 'answer'];
  
  // 字段存在性检查
  requiredFields.forEach(field => {
    if (!data[field]) {
      throw { code: 4002, msg: `缺少必要字段：${field}` };
    }
  });

  // 题目内容验证
  if (data.text.length < 5) {
    throw { code: 4101, msg: '题目内容至少需要5个字符' };
  }

  // 选项验证
  if (data.options.length < 2) {
    throw { code: 4102, msg: '至少需要2个有效选项' };
  }
  if (data.options.length > 4) {
    throw { code: 4103, msg: '最多支持4个选项' };
  }

  // 答案有效性验证
  if (!data.options.includes(data.answer)) {
    throw { 
      code: 4104, 
      msg: `答案不存在于选项中 (答案: ${data.answer}, 选项: ${data.options.join(', ')})`
    };
  }
}